CPE 426 Computer Networks
Chapter 7:
Text Chapter 25: UDP
TOPICS
Chapter 25: UDP (User Datagram Protocol)
Connectionless and Protocol
Communication Semantics and Port Numbers
UDP Format and Encapsulation
Chapter 26: TCP (Introduction)
Chapter 25: UDP; Datagram
Transport Service
ในกรณีที่ Application ต้องการใช้ Service ของ
Connectionless โดยที่ไม่ต้องการ Service ใดๆ
เพิ่มเติม จะสามารถใช้ IP ได้โดยตรง แต่ย ังมีปัญหา
สองประการ
Application เป็น Layer 5 แต่ IP เป็น Layer 3 นํามาวางโดยตรง
ไม่ได ้
แต่ละ Host อาจจะมีหลาย Application ที่ต ้องการ Service จาก IP
เราต ้องมีการกําหนดหมายเลข Application
กล่าวคือ เราต้องการ Layer 4 Protocol บางๆ ไม่ทํา
หน้าที่อะไรมาก แค่เป็นการเชื่อมต่อระหว่าง
Application Layer ก ับ IP Layer และมีการกําหนด
หมายเลข Application
หมายเลขที่กําหนด เราเรียก Port Number
Protocol นี้คือ User Datagram Protocol (UDP)
Ch. 25: 25.2 Transport Protocol
and End-to-end Communication
IP ไม่มี Mechanism ในการแยกแยะระหว่าง
หลายๆ Application ที่ส่งในระด ับ End-to-
end
Field ใน IP Header กําหนดแค่ IP Address คือ
หมายเลขของ Host เท่านั้น
Host คือ End Point ในมุมมองของ IP
เราต้องการ Transport Layer Protocol
End Point ของ Transport Protocol คือ Application
ดังนั้น End-to-End Protocol ที่แท ้จริงใน TCP/IP จะอยู่
ใน Transport Protocol แยกต่างจาก IP เป็น Layer 4
Ch. 25: 25.3 The User Datagram
Protocol
TCP/IP จะมีสอง Transport Protocol
User Datagram Protocol(UDP) (Protocol 17; 0x11)
ไม่มีความสลับซับซ ้อน และง่าย
แต่จะไม่มี Service อะไรมากนักให ้กับผู ้ใช ้
Transport Control Protocol(TCP)
UDP จ ัดว่าเป็น
End-to-end สามารถแยกแต่ละ Application ได ้
Connectionless เชื่อมต่อโดยไม่ต ้องทํา Connection
Message-Oriented แต่ละข ้อมูลที่ Application ส่งจะถือว่าเป็นหนึ่ง
Message ไม่มีการทํา Segmentation
Best-Effort ใช ้ IP ในการส่งโดยไม่มี Mechanism เพิ่มเติม
Arbitrary Interaction แต่ละ Application สามารถส่งให ้กับหลาย
และรับได ้จากหลาย Application
OS Independent
Ch. 25: 25.4 Connectionless
Paradigm
UDP ถือว่าเป็น Thin Protocol Layer
เชื่อมต่อระหว่างหลาย Application โดยการ
ส่งข้อมูลผ่าน IP
ใช้ว ิธีการเชื่อมต่อก ับ Network แบบ
Connectionless
Application ไม่ต ้องทํา Connection ก่อนจะส่ง
Message และเมื่อส่งจบ ไม่ต ้องบอก Network ในการ
จบการสื่อสาร อยากจะหยุดเมื่อไร ก็หยุดได ้เลย
ไม่มีการบันทึก State ของการสื่อสาร
ไม่มีการส่ง Control Message
ดังนั้นจะมี Overhead ตํ่ามาก
Ch. 25: 25.5 Message Oriented
Interface
Application ส่ง Block ของ Data โดยที่ UDP
จะมองว่าเป็นหนึ่ง Message และจะถูกส่งไป
ท ั้ง Message โดยประกอบใน Packet เดียว
ไม่มีการแบ่ง หรือรวม
ด ังน ั้นไม่ต้องก ังวลเรื่องการประกอบ Data
กล ับคืนมา หรือหาขอบเขตของข้อมูล
แต่ถ ้า Message มีขนาดเล็ก จะมี Overhead จาก
Header ต่างๆสูง
กลับกัน ถ ้า Message มีขนาดใหญ่กว่า MTU จะเกิดการ
ทํา Fragmentation ในชั้น IP
Fragment อาจจะมีการกระทําตั้งแต่ที่ Host ทําให ้ Efficiency ลดลง
ในทางปฎิบัติ ผู ้เขียน Program ควรกําหนดขนาด Message ไม่
เกิน 1400 หรือ 1450 ในการส่งผ่าน Ethernet
Ch. 25: 25.6 UDP
Communication Semantics
เนื่องจาก UDP จะใช้ IP โดยไม่มี Service อะไร
เพิ่มเติม ด ังน ั้นม ันจะส่ง Message แบบ Best-Effort เช่นเดียวก ับ IP น่ันหมายถึงว่า Message ที่ส่ง อาจจะ
เกิด (เรียกว่า Communication Semantics)
สูญหาย
Duplicate
Delayed
Delivery Out-of-Order
Corrupted
UDP จะไม่มีการตรวจสอบ หรือพยายามแก้ไขปัญหา
ต่างๆเหล่านี้
หมายความว่า ผู้เขียน Application ที่ต้องการใช้ UDP
จะต้องเขียน Mechanism ที่จะจ ัดการก ับสิ่งเหล่านี้เอง
ใน Software ถ้าต้องการ
ถ ้าเป็นพวก Real-time Audio อาจจะไม่ต ้องทํา แต่ถ ้าเป็นข ้อมูล
สําคัญ ต ้องทําเอง หรือหันไปใช ้ TCP ซึ่งจะกล่าวในบทหน ้า
Ch. 25: 25.7 Mode of Interaction
and Broadcast Delivery
UDP จะยอมให้มีการส่งข้อมูลได้ 4 แบบ
1-to-1
1-to-Many
หนึ่ง Application สามารถส่ง Message ให ้หลาย Application
UDP ยอมให ้ Application ส่ง Message ผ่าน Multicast หรือ
Broadcast
Many-to-1
หนึ่ง Application สามารถรับ Message จากหลายผู ้ส่ง
Many-to-Many
กลุ่มของ Application สามารถแลกเปลี่ยนข ้อมูลกับกลุ่มของ
Application
Ch. 25: 25.8 End Point
Identification with Protocol Port
UDP จะต้องเป็น Independent ก ับ Operating System
แต่ละ OS กําหนด Application ด ้วย PID(Process ID)
แต่ละ OS มีวิธีการกําหนด PID ต่างกัน
UDP จะใช ้ PID เป็นตัวกําหนด Application ไปได ้ เพราะแต่ละเครื่องจะใช ้
แตกต่างกัน แม ้ว่าจะเป็น Application เดียวกันก็ตาม
UDP จะกําหนด Application ด้วย Port Number ซึ่งจะ Map เข้าก ับ PID ของแต่ละ Host อีกทีหนึ่ง
เช่น Echo Service ใช ้ Port 7 หรือ Timeserver Service ใช ้ Port 36
Port Number จะ Independent กับ OS ของ Host
การสื่อสารกระทําโดย Application จะขอ Service ผ่าน Socket โดยกําหนด Address และ Port Number ให้ก ับ Socket
1-to-1 Application กําหนด Local Port, Remote IP Address, Remote Port
Many-to-1 Application กําหนด Local Port แต่จะบอก UDP ว่า Message จะมาจากที่ใดก็ได ้ ดังนั้นทุกๆ Message ที่มีปลายทางที่ Port นี้ จะถูกส่ง
มายัง Application นี้
Ch. 25: 25.8 End Point
Identification with Protocol Port
UDP Port 16 Bit จาก 0 – 65535
กําหนดการใช้งานโดย IANA(Internet Assigned
Numbers Authority, ปัจจุบ ันเป็น Department ของ
ICANN, Internet Corporation for Assigned
Names and Numbers)
Internet Assigned Numbers Authority
Port 0 Reserved แต่ใช ้ได ้สําหรับเป็น Port ส่งและไม่ต ้องการรับ
Port 0 – 1023 สําหรับ Common, Well-Known Service
Port 1024 – 49151 เป็น Registered Port สําหรับ Application ที่
ขึ้นทะเบียนไว ้กับ IANA
Port 49152 – 65535 เป็น Dynamic Port ที่สามารถนําไปใช ้ได ้
Ch. 25: 25.9 UDP Datagram
Format
แต่ละ UDP Message เรียกว่า User
Datagram ซึ่งจะถูกแบ่งเป็นสองส่วนคือ
Header ขนาดส ั้นๆ(8 Octet) และ
Payload
UDP Message Length จะกําหนดขนาดของ
Message รวม Header เป็น Byte
Ch. 25: 25.10 UDP Checksum และ
Pseudo Header
ส่วน Checksum ของ UDP เป็น Option ถ ้าไม่
ใช้จะใส่ศูนย์ สําหร ับ IPv4
ถ ้าเป็น IPv6 จะต ้องมี Checksum
UDP Header จะไม่มีข้อมูลของ IP Address
เพราะม ันต้องบรรจุใน IP ที่บ่งบอก Address
อยู่แล้ว
แต่ถ ้า IP Layer เกิดมีปัญหา ส่ง Message UDP มาผิดที่
ตัว UDP จะไม่สามารถตรวจสอบได ้ว่า Message ตั้งใจจะ
ส่งมาให ้ตัวเองหรือไม่
ดังนั้น Header Checksum จะคํานวนไม่ใช่เฉพาะส่วนหัว
ของ UDP แต่จะคํานวนจากส่วนหัวของมันบวกกับข ้อมูล
จาก IP Header ด ้วย เรียก Pseudo Header
Ch. 25: 25.10 UDP Checksum และ
Pseudo Header
ด ังน ั้น ถ้ามีการใช้ Checksum ม ันจะคํานวนจากส่วนห ัว
บวกด้วย IP Address, Protocol(Type) และ UDP
Length จาก IP Header (Pseudo Header) และ
Data
การคํานวณจะนําแต่ละ 16 Bit Word มาทํา 1’s Complement Sum ผลลัพธ์ที่ได ้จะทํา 1’s Complement อีกทีหนึ่ง ถ ้าผลเป็นศูนย์จะทํา
1’s Complement อีกครั้ง
Pseudo
Header
Pseudo Header สําหร ับ IPv6
Next Header = UDP(0x11, 17)
Pseudo
Header
Ch. 25: 25.11 UDP Encapsulation
UDP บรรจุใน IP โดยใช้ Protocol เบอร ์
17 (0x11)
การใช้งาน UDP
UDP จะใช้กรณีที่ไม่เน้นในเรื่องความเชื่อถือได้ของการส่งข้อมูล
แต่จะเน้นที่ Overhead ตํ่า และความรวดเร็ว
DNS (Domain Name Service)
DHCP (Dynamic Host Configuration Protocol)
SNMP (Simple Network Management Protocol)
RIP (Routing Information Protocol)
VoIP (Voice over IP)
Streaming Media (Real-time Video/Audio)
Online Games (MMORPG, Massively multiplayer online role-playing games )
Chapter 26
TCP
Transport Control Protocol
Reliable Protocol for the Internet
TCP/IP (TCP over IP)
Chapter 26 TCP: Reliable
Transport Service
ในกรณีที่เราต้องการความม ่ันใจในการส่ง
ข้อมูลได้อย่างถูกต้อง ผ่าน IP ที่มีการทํางาน
แบบ Datagram เราต้องใส่ Mechanism
เพื่อให้ความม่ันใจด ังกล่าวลงใน Protocol
ของ Layer 4 (Host-to-Host หรือ
Transport)
เราจะต ้องเลือกใช ้ TCP (Transmission Control
Protocol)
เรียกรวมๆว่า TCP/IP
การใช ้ TCP+IP ทําให ้ผู ้เขียน Application ไม่ต ้องกังวล
เรื่องของการส่งข ้อมูลอีกต่อไป
เพียงแต่นําข ้อมูลส่งให ้ พร ้อมกําหนด IP Address และ Port Number จากนั้น ระบบ TCP/IP จะจัดการที่เหลือให ้
ผิดกับกรณีที่ใช ้ UDP/IP ในบทที่แล ้ว
กล่าวคือ TCP จะให ้ Reliability ในการสื่อสาร
Chapter 26 TCP: 26.3 TCP
Service
TCP ให้บร ิการของ 7 ส่วนใหญ่ๆ ด ังนี้
Connection Orientation
TCP ให ้บริการแบบ Connection-Oriented ซ ึ่ง Application จะต ้องร ้องขอการเชื่อมต่อก่อนที่จะมีการส่งข ้อมูล
Point-to-Point Communication
แต่ละ Connection ของ TCP จะมีสอง End Points เท่านั้น
(กําหนด Port ต ้นทาง-ปลายทาง และ IP ต ้นทาง-ปลายทาง )
Complete Reliability
TCP จะ Guarantee ว่าข ้อมูลที่ส่ง จะไปถึงที่หมายได ้อย่าง
ถูกต ้อง สมบูรณ์ และเป็นลําดับ
Full Duplex Communication
แต่ละ TCP Connection จะยอมให ้ข ้อมูลส่งได ้สองทิศทาง
ตลอดเวลา
Chapter 26 TCP: 26.3 TCP
Service(2)
TCP ให้บร ิการของ 7 ส่วนใหญ่ๆ ด ังนี้(ต่อ)
Stream Interface
Application สามารถส่งข ้อมูลได ้อย่างต่อเนื่อง Octet ต่อ Octet ผ่าน TCP Connection โดย TCP จะไม่มีการรวมกลุ่มของ Data ให ้เป็น Record หรือ Message และจะไม่ Guarantee ว่าแต่ละ
ส่วนของข ้อมูลที่ไปถึงมีขนาดเท่ากับที่ Application ส่งให ้(มีการ
ทํา Segmentation)
Reliable Connection Startup
TCP ให ้สอง Application สามารถเริ่มต ้นการสื่อสารได ้อย่าง
มั่นใจ
Graceful Connection Shutdown
ก่อนที่จะจบ Connection นั้น TCP จะให ้ความมั่นใจว่าข ้อมูลได ้
ถูกส่งอย่างครบถ ้วนทั้งสองฝั่ง และทั้งสองฝั่งยินยอมให ้มีการจบ
การเชื่อมต่อ
Chapter 26 TCP: 26.4 End-to-End
Service and Virtual Connection
TCP จ ัดว่าเป็น End-to-End Protocol เหมือน
UDP
เนื่องจากมันให ้บริการการสื่อสารระหว่าง Application ของสอง Computer
แต่ม ันเป็น Connection-Oriented
เนื่องจากต ้องมีการทํา Connection ก่อนส่งข ้อมูล
และต ้องมีการทํา Disconnection
Connection ของ TCP จ ัดว่าเป็น Virtual
Connection
เนื่องจากกระทําผ่าน Software เพราะตัว Network (IP) นั้นเป็น Connectionless(Datagram)
Chapter 26 TCP: 26.4 End-to-End
Service and Virtual Connection
แต่ละ TCP Message(Segment) จะถูกบรรจุใน IP
Datagram และส่งผ่าน Internet เมื่อถึงปลายทาง IP
จะปลอก Datagram Payload และส่งต่อไปย ัง TCP
IP จะมอง TCP เป็นแค่ Data ที่จะต ้องส่ง
TCP จะมอง IP เป็นพาหนะสําหรับส่งข ้อมูล ไปยัง TCP อีกฝั่งหนึ่ง
Chapter 26 TCP: 26.5 Transport
Protocol Techniques
ปัญหาที่ End-to-End Transport Protocol จะต้อง
เจอ ในการได้มาซึ่ง Reliable Service
Unreliable Communication
Message อาจจะสูญหาย ซํ้าซ ้อน ผิดพลาด ถูกหน่วงเวลา หรือส่งมา
ไม่เป็นลําดับ (Lost, Duplicated, Corrupted, Delayed, Out of Order)
End System Reboot
ถ ้า Host เกิด Crash หรือมีการ Reboot ข ้อมูลที่ค ้างอยู่ จะต ้องไม่
สับสนกับ Session ที่ถูกสร ้างขึ้นมาใหม่
Heterogeneous End System
แต่ละ Host ที่เชื่อมต่อใน Internet มีความสามารถรับ-ส่งข ้อมูลได ้ไม่
เท่ากัน
Congestion in the Internet
เมื่อมีการส่งข ้อมูลมากเกินไป จะเกิดความคับคั่งภายใน Network ได ้
ปกติแล้ว Transport Protocol จะใช้หลายๆวิธีร่วมก ัน
ในการจ ัดการก ับปัญหาเหล่านี้ เราจะกล่าวพื้นฐานแต่
ละอ ันต่อไป
Chapter 26 TCP: 26.5.1 Sequencing to
Handle Duplicates and Out-of-Order
Delivery
Transport Protocol จะทํา
Sequencing (กําหนดหมายเลขลําด ับ
ของข้อมูล) ในการจ ัดการก ับปัญหาเรื่อง
Duplicate Data และข้อมูลที่ไปถึงอย่าง
ไม่เป็นลําด ับ
คล ้ายกับวิธีที่กระทําใน Layer 2
หมายเลขข ้อมูลทําให ้เรารู ้ว่าข ้อมูลนั้นมาซํ้ากัน
หรือไม่
ทําให ้รู ้ว่าข ้อมูลมาเป็นลําดับหรือไม่
Chapter 26 TCP: 26.5.2 Retransmission to
Handle Lost Packet
ในการจ ัดการก ับ Packet Lost น ั้น Transport Protocol จะใช้ Positive
Acknowledgement ร่วมก ับการ
Retransmission
คล ้ายกับ Mechanism ใน Layer 2 เช่นกัน
เมื่อ Frame มาถึงอย่างถูกต ้อง จะมีการส่ง ACK
Message กลับไป
เมื่อผู ้ส่ง ส่งข ้อมูลแต่ละ Packet จะมีการจับเวลาโดยใช ้
Timer
ถ ้า Timer Expire (คือไม่ได ้รับ ACK ในเวลาที่กําหนด) ผู ้ส่งจะ
ทําการ Retransmission ข ้อมูลนั้นไปใหม่
ถ ้า Packet มีการ Delay มาก อาจจะทําให ้เกิด
Retransmission ยังผลให ้เกิด Duplicate Packet
Chapter 26 TCP: 26.5.3
Techniques to Avoid Replay
ในกรณีที่ Network มี Delay สูง อาจจะทําให้
เกิด ‘Replay Error’ โดยที่ Packet ที่ Delay
น ั้นจะส่งผลต่อการสื่อสารในตอนหล ัง
ยกต ัวอย่าง
สองคอมพิวเตอร์ตกลงจะสื่อสารกันเมื่อเวลา 13.00 น.
คอมพิวเตอร์เครื่องหนึ่ง ส่ง 10 Packet ติดต่อกันไปยัง
ฝั่งตรงข ้าม
ปัญหาด ้าน Hardware ทําให ้ Packet 3 ถูก Delay ไป
เส ้นทางการส่งข ้อมูลถูกเปลี่ยน เพื่อใช ้เส ้นทางที่ไม่ผ่าน
อุปกรณ์ที่มีปัญหา
Protocol ที่คอมพิวเตอร์ต ้นทางส่ง Packet 3 ไปใหม่
จากนั้นส่ง Packet อื่นๆตาม จากนั้นจบการสื่อสาร
Chapter 26 TCP: 26.5.3
Techniques to Avoid Replay
สองคอมพิวเตอร์ตกลงจะสื่อสารกันเมื่อเวลา 13.00 น.
คอมพิวเตอร์เครื่องหนึ่ง ส่ง 10 Packet ติดต่อกันไปยังฝั่งตรงข ้าม
ปัญหาด ้าน Hardware ทําให ้ Packet 3 ถูก Delay ไป
เส ้นทางการส่งข ้อมูลถูกเปลี่ยน เพื่อใช ้เส ้นทางที่ไม่ผ่านอุปกรณ์ที่มี
ปัญหา
Protocol ที่คอมพิวเตอร์ต ้นทางส่ง Packet 3 ไปใหม่ จากนั้นส่ง
Packet อื่นๆตาม จากนั้นจบการสื่อสาร
เวลา 13.05 น. คอมพิวเตอร์ทั้งสองตกลงที่จะสื่อสารกันใหม่
หลังจากผู ้ส่งคนเดิม ส่งไปได ้สอง Packet แล ้ว ตัว Packet 3 จาก
การสื่อสารครั้งแรกที่ถูก Delay มาถึงยังผู ้รับ
ต่อจากนั้น Packet ที่ 3 จากการสื่อสารครั้งที่สองมาถึงยังผู ้รับ
Transport Protocol ต้องออกแบบเพื่อจ ัดการก ับเรื่อง
นี้ มิฉะน ั้นผู้ร ับจะได้ Packet 3 ที่ผิดพลาด ในขณะที่
โยนทิ้ง Packet ที่ถูกต้อง
Protocol จะต ้อง Mark แต่ละ Session โดยใช ้ ID ที่เฉพาะ ไม่ซํ้า
กัน โดยการนํา ID กลับมาใช ้ใหม่ต ้องให ้แน่ใจว่าจะไม่เกิด Replay (เวลาต ้องห่างกัน)
Replay (Selective Reject)
0
1
3
4
5
6
7
9
9
2
0
1
?
2
3
Chapter 26 TCP: 26.5.3
Techniques to Avoid Replay
Replay ย ังสามารถเก ิดก ับ Control
Packet ได้เช่นก ัน
เช่น Connection Closing Packet ถูก Delay
และไปถึงหลังจากมีการทํา Connection ใหม่
ครั้งที่สอง
Chapter 26 TCP: 26.5.4 Flow
Control to Prevent Data Overrun
ในการจ ัดการเรื่อง Heterogeneous End
System ที่มีความสามารถไม่เท่าก ัน ต ัว
Transport Protocol จะใช้วิธีการของ Flow
Control เพื่อควบคุม
Stop-and-go Protocol มักจะไม่ใช ้ เนื่องจากมี
ประสิทธิภาพตํ่า
ปกติจะใช ้ Sliding Window Flowcontrol
เช่นเดียวกัน จะคล ้ายกับ Flow Control ใน Layer 2
การคํานวณ Efficiency จะคล ้ายกับที่กล่าวมาแล ้วใน Layer 2
ให ้ดูใน Slide ก่อนหน ้า หรือดูจาก CPE 326 Course Notes
Chapter 26 TCP: 26.5.4 Flow
Control to Prevent Data Overrun
Chapter 26 TCP: 26.6 Techniques
To Avoid Congestion
Congestion เก ิดเมื่อมีข้อมูลที่จะส่งมากเก ิน
กว่าที่ Network จะร ับได้
อธิบายได ้โดยใช ้ Queuing Theory
Packet จะถูก Delay ไปมาก ในลักษณะ Exponential
ถ ้า Queue ล ้น Packet จะสูญหาย
1 Gbps
1 Gbps
1 Gbps
Chapter 26 TCP: 26.6 Techniques
To Avoid Congestion
Retransmission เนื่องจาก Queue ล้น จะทําให้เกิด
Congestion Collapse
Packet ที่ Retransmit จะถูกโยนทิ้งอีก เพราะ Queue ล ้น
Congestion จะต้องตรวจจ ับได้อย่างท ันท่วงที และทํา
การแก้ไข มิฉะน ั้นจะเกิดผลเสียหายต่อท ั้ง Network ซึ่งการตรวจจ ับของ Transport Protocol จะใช้
พื้นฐานจากสองวิธี
Intermediate System(Router) จะต ้องแจ ้งไปยังผู ้ส่ง เมื่อมี
Congestion
ผู ้ส่งตรวจจับการเกิด Congestion เอง โดยดูจากค่า Delay หรือ
จํานวน Loss ของ Packet
ใน Internet จะใช ้วิธีการนี้ เนื่องจาก Delay และ Loss ส่วนใหญ่ (ถ ้า
ไม่ใช่เกิดจาก Hardware Failure) จะเป็นผลมาจาก Congestion
การแก ้คือลดการส่งลง ทําได ้โดยการควบคุมที่ Flow Control (ลด
ขนาดของ Window ลง)
Homework
ยังไม่มีการบ้านในสัปดาห์นี้